var express = require('express'); //引入express模块
var fs = require('fs'); //引入文件处理模块
var app = express();

var path = './json/index.json';
//这里因为是测试是用的，json文件都很小，所以采用同步方法读取文件。
var json = fs.readFileSync(path);
var keyList = JSON.parse(json);

// 开放根目录下image文件夹，使得外网可以访问
app.use('/image',express.static('./image'));

//跨域处理
app.use((req, res, next) => {
    //设置请求头
    res.set({
        'Access-Control-Allow-Credentials': true,
        'Access-Control-Max-Age': 1728000,
        'Access-Control-Allow-Origin': req.headers.origin || '*',
        'Access-Control-Allow-Headers': 'X-Requested-With,Content-Type',
        'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS',
        'Content-Type': 'application/json; charset=utf-8'
    })
    req.method === 'OPTIONS' ? res.status(204).end() : next()
})

//定义方法
app.get('/',function(req,res){
    res.send('Hello World!')
});

//响应接口
app.get('/test/json',function(req,res){
    let key = req.query.key;
    let pathHead = "./json/";
    let jsonPath = "";

    //查找 index.json 里 有没有包含key的json路径
    let miniPath = keyList.find((item, index, arr) => {
        return item.key === key;
    });

    //拼接json数据
    if(miniPath){
        //拼接内如如下 ./json/json/xxx.json
        jsonPath = pathHead + miniPath.path;
    }

    //找到与key匹配的路径后，进行返回json操作
    if(jsonPath){
        let result = {
            code: 1,
            msg: '查询成功！',
            data: JSON.parse(fs.readFileSync(jsonPath))
        }
        res.send(result);
    }else{
        let result = {
            code: 0,
            msg: 'Error: [' + key + '] is undefined，请确认是否传入了正确的key参数。事例：/test/json?key=xxx',
            data:{}
        }
        res.send(result);
    }
})

//启动服务
var server = app.listen(8881, function(){
    console.log('127.0.0.1:8881');
})